﻿using ImageProcessing.Model.LogModel;

namespace ImageProcessing.Comm.LogHelp
{
    /// <summary>
    /// 日志帮助类接口
    /// ErLin Li
    /// 2021/4/15
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public interface ILoggerHelper<T>
    {
        /// <summary>
        /// 调试信息  与程序运行时的流程相关的详细信息以及当前变量状态, 用于调试和开发。 由于量大，请在生产中小心使用。
        /// </summary>
        /// <param name="logModel">message</param>
        //void Debug(LogModel logModel);
        /// <summary>
        /// 调试信息  与程序运行时的流程相关的详细信息以及当前变量状态, 用于调试和开发。 由于量大，请在生产中小心使用。
        /// </summary>
        /// <param name="message">message</param>
        //void Debug(string message);
        /// <summary>
        /// 关键信息  跟踪应用的常规流,有意义的事件信息，记录程序正常的运行状态，比如收到请求，成功执行。通过查看INFO,可以快速定位WARN，ERROR, FATAL。INFO不宜过多，通常情况下不超过 DEBUG 的10%
        /// </summary>
        /// <param name="logModel">logModel</param>
        void Info(LogModel logModel);

        void GlobalActionFilter_Log(LogModel logModel);

        /// <summary>
        /// 关键信息  跟踪应用的常规流,有意义的事件信息，记录程序正常的运行状态，比如收到请求，成功执行。通过查看INFO,可以快速定位WARN，ERROR, FATAL。INFO不宜过多，通常情况下不超过 DEBUG 的10%
        /// </summary>
        /// <param name="message">message</param>
        void Info(string message);

        /// <summary>
        /// 警告信息  对于异常事件或意外事件。 通常包括不会导致应用失败的错误或情况。
        /// </summary>
        /// <param name="message">message</param>
        void Warn(string message);

        /// <summary>
        /// 警告信息  对于异常事件或意外事件。 通常包括不会导致应用失败的错误或情况。
        /// </summary>
        /// <param name="message">message</param>
        void Warn(string message, Exception exception);

        /// <summary>
        /// 错误信息  表示无法处理的错误和异常。 这些消息表示当前操作或请求失败，而不是整个应用失败。
        /// </summary>
        /// <param name="message">message</param>
        void Error(string message, Exception exception);

        void GlobalExceptionFilter_Log(LogModel logModel);

        /// <summary>
        /// 失败 程序中断性错误
        /// </summary>
        /// <param name="message">message</param>
        void Fatal(string message, Exception exception);
    }
}